perm filename NLF.SAI[LOU,BGB] blob
sn#084656 filedate 1974-12-08 generic text, type T, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
RECORD PAGE DESCRIPTION
00001 00001
00002 00002 BEGIN "NLF"
00008 00003 PUT_DATA(0,0,"NLF")
00011 ENDMK
⊗;
BEGIN "NLF"
REQUIRE "PREAMB.sai[SYS,HE]" SOURCE_FILE;
REQUIRE 200 STRING_SPACE;
DEFINE CRLF="'15&'12";
PRELOAD_WITH 0, 0, 0.4, 1.0;
SAFE REAL ARRAY SL[1:4];
SAFE REAL ARRAY NULL[1:4];
PRELOAD_WITH 0.00000, -1.00000, 0.00000, 10.0,
-1.00000, 0.00000, 0.00000, 25.0,
0.00000, 0.00000, -1.00000, 1.0,
0.00000, 0.00000, 0.00000, 1.0;
REAL ARRAY X1[1:4,1:4];
PRELOAD_WITH 0.00000, -1.00000, 0.00000, 20.0,
-1.00000, 0.00000, 0.00000, 25.0,
0.00000, 0.00000, -1.00000, 1.2,
0.00000, 0.00000, 0.00000, 1.0;
REAL ARRAY X2[1:4,1:4];
PRELOAD_WITH 0.00000, -1.00000, 0.00000, 30.0,
-1.00000, 0.00000, 0.00000, 25.0,
0.00000, 0.00000, -1.00000, 0.9,
0.00000, 0.00000, 0.00000, 1.0;
REAL ARRAY X3[1:4,1:4];
PRELOAD_WITH -1.00000, 0.00000, 0.00000, 30.0,
0.00000, 1.00000, 0.00000, 25.0,
0.00000, 0.00000, -1.00000, 0.9,
0.00000, 0.00000, 0.00000, 1.0;
REAL ARRAY SQAR[1:4,1:4];
PRELOAD_WITH 0,0,0,1;
REAL ARRAY ZERO[1:4];
INTEGER I,M;
BOOLEAN FIRST;
STRING S;
LABEL L1;
SIMPLE PROCEDURE SORRY;
BEGIN OUTSTR("SORRY"&CRLF&CRLF);
CALL(0,"EXIT");
END;
SIMPLE PROCEDURE MOVE_IT(REAL ARRAY A,B);
BEGIN INTEGER PLAN_SAV;
A[3,4]←A[3,4]-1.00;
B[3,4]←B[3,4]+1.0;
ISSUE(5,"NLF","HAND",MESSAGE START_TRAJECTORY("HANOI",0));
ISSUE(5,"NLF","HAND",MESSAGE OPEN_HAND(3));
ISSUE(7,"NLF","HAND",MESSAGE MOVE_ARM(A,ARM_PLAN));
IF ARM_PLAN THEN BEGIN
ISSUE(5,"NLF","HAND",MESSAGE CLOSE_HAND(0.5));
ISSUE(5,"NLF","HAND",MESSAGE MOVE_ARM(B,ARM_PLAN));
ISSUE(5,"NLF","HAND",MESSAGE PLACE_ARM);
ISSUE(7,"NLF","HAND",MESSAGE OPEN_HAND(3.0));
IF (PLAN_SAV←ARM_PLAN) THEN BEGIN SQAR[1,4]←B[1,4];SQAR[2,4]←B[2,4];SQAR[3,4]←B[3,4]←B[3,4]-1;
ISSUE(5,"NLF","HAND",MESSAGE ARM_CONO(SL,NULL,0,0));
ISSUE(5,"NLF","HAND",MESSAGE MOVE_ARM(SQAR,ARM_PLAN));
ISSUE(5,"NLF","HAND",MESSAGE CLOSE_HAND(0.5));
ISSUE(5,"NLF","HAND",MESSAGE OPEN_HAND(3.0));
B[3,4]←B[3,4]+1;
ISSUE(7,"NLF","HAND",MESSAGE CLOSE_TRAJECTORY);
END;
END;
IF ¬PLAN_SAV THEN BEGIN
OUTSTR("I CANNOT REACH THE BLOCK AT "
&"("&CVS(A[1,4])&","&CVS(A[2,4])&")"&CRLF&
"PLEASE MOVE IT TO "
&"("&CVS(B[1,4])&","&CVS(B[2,4])&") AND TYPE C/R"&CRLF&CRLF);
INCHWL;
OUTSTR("THANK YOU"&CRLF&CRLF);
END ELSE BEGIN
ISSUE(7,"NLF","HAND",MESSAGE DO_IT(0,"HANOI"));
IF ARM_STATUS THEN OUTSTR(CVOS(ARM_STATUS)&" SORRY, YOU WILL HAVE TO DO IT FOR ME"&CRLF);
END;
END;
RECURSIVE PROCEDURE STACK(INTEGER H;REAL ARRAY A,B,C);
BEGIN IF H=1 THEN
BEGIN MOVE_IT(A,B);
RETURN ;
END;
H←H-1;
STACK(H,A,C,B);
MOVE_IT(A,B);
STACK(H,C,B,A);
END;
PUT_DATA(0,0,"NLF");
WHILE ¬ YES_HAND DO CALL(1,"SLEEP");
OUTSTR("DRIVE INITIALIZED"&CRLF&CRLF);
DO BEGIN
ISSUE(5,"NLF","HAND",MESSAGE START_TRAJECTORY ("H00000",0));
ISSUE(5,"NLF","HAND",MESSAGE PARK_ARM);
ISSUE(5,"NLF","HAND",MESSAGE OPEN_HAND(3));
ISSUE(5,"NLF","HAND",MESSAGE CLOSE_TRAJECTORY);
OUTSTR("STAND CLEAR OF THE ARM AND TYPE C/R
");
INCHWL;
ISSUE(7,"NLF","HAND",MESSAGE DO_IT(0,"H00000"));
IF ARM_STATUS THEN BEGIN OUTSTR(CVOS(ARM_STATUS)&" PLEASE CHECK THE ARM & TYPE C/R"&'15&'12);
INCHWL;
END;
END UNTIL ¬ARM_STATUS;
OUTSTR("PLACE BLOCKS AT (10,25) AND TYPE THE HEIGHT"
&CRLF&CRLF);
SETFORMAT(0,1);
X1[3,4]←0.8;
X2[3,4]←0.8;
X3[3,4]←0.8;
S←INCHWL;
I←INTSCAN(S,M);
IF I<1 THEN BEGIN OUTSTR("WE CANNOT MOVE BELOW THE TABLE"&CRLF&CRLF);
SORRY;END;
M←2↑I-1;
OUTSTR("THAT'S "&CVS(M)& " MOVES, KEEP YOUR FINGERS CROSSED"&CRLF&CRLF);
SETFORMAT(-5,0);
X1[3,4]←X1[3,4]+I;
ISSUE(5,"NLF","HAND",MESSAGE START_TRAJECTORY ("H00000",0));
ISSUE(5,"NLF","HAND",MESSAGE MOVE_ARM(X1,ARM_PLAN));
ISSUE(5,"NLF","HAND",MESSAGE CLOSE_TRAJECTORY);
ISSUE(7,"NLF","HAND",MESSAGE DO_IT(0,"H00000"));
IF ARM_STATUS THEN OUTSTR(CVOS(ARM_STATUS)&" PLEASE CHECK THE ARM & TYPE C/R"&'15&'12);
OUTSTR("THIS IS WHERE THE ARM THINKS THE BLOCKS SHOULD BE
TYPE C/R TO PROCEED
");
INCHWL;
STACK(I,X1,X2,X3);
M←ISSUE(5,"NLF","HAND",MESSAGE START_TRAJECTORY("HANOI",0));
ISSUE(5,"NLF","HAND",MESSAGE PARK_ARM);
ISSUE(7,"NLF","HAND",MESSAGE CLOSE_TRAJECTORY);
ISSUE(7,"NLF","HAND",MESSAGE DO_IT(0,"HANOI"));
IF ARM_STATUS THEN OUTSTR("DID I HIT SOMEBODY!"&'15&'12) ELSE
OUTSTR("IF THAT HAD BEEN 64 BLOCKS THE WORLD WOULD HAVE JUST ENDED!
THANK YOU AND GOOD NIGHT."&CRLF&CRLF);
END;